package com.sys.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sys.common.core.domain.entity.SysUser;
import com.sys.system.domain.SysUserThirdAuth;
import com.sys.system.domain.fo.BindThirdAuthFO;
import com.sys.system.domain.vo.ThirdAuthVO;

import java.util.List;

/**
 * 第三方授权Service接口
 *
 * @author LGY
 * @date 2025-04-18
 */
public interface ISysUserThirdAuthService extends IService<SysUserThirdAuth> {
    /**
     * 查询第三方授权
     *
     * @param id 第三方授权主键
     * @return 第三方授权
     */
    SysUserThirdAuth selectSysUserThirdAuthById(String id);

    /**
     * 查询第三方授权列表
     *
     * @param sysUserThirdAuth 第三方授权
     * @return 第三方授权集合
     */
    List<SysUserThirdAuth> selectSysUserThirdAuthList(SysUserThirdAuth sysUserThirdAuth);

    /**
     * 新增第三方授权
     *
     * @param sysUserThirdAuth 第三方授权
     * @return 结果
     */
    void insertSysUserThirdAuth(SysUserThirdAuth sysUserThirdAuth);

    /**
     * 修改第三方授权
     *
     * @param sysUserThirdAuth 第三方授权
     * @return 结果
     */
    void updateSysUserThirdAuth(SysUserThirdAuth sysUserThirdAuth);

    /**
     * 批量删除第三方授权
     *
     * @param ids 需要删除的第三方授权主键集合
     * @return 结果
     */
    void deleteSysUserThirdAuthByIds(String[] ids);

    /**
     * 获取第三方授权列表
     *
     * @param userId 用户id
     * @return 第三方授权列表
     */
    List<ThirdAuthVO> getThirdAuths(String userId);

    /**
     * 绑定第三方授权登录
     *
     * @param bindThirdAuthFO 绑定第三方授权登录参数
     */
    void bindThirdAuth(BindThirdAuthFO bindThirdAuthFO);

    /**
     * 解绑第三方授权登录
     *
     * @param bindThirdAuthFO 解绑第三方授权登录参数
     */
    void unbindThirdAuth(BindThirdAuthFO bindThirdAuthFO);

    /**
     * 根据第三方授权类型和第三方授权id获取用户信息
     *
     * @param thirdAuthUUId 第三方授权id
     * @param type          第三方平台类型
     * @return
     */
    SysUser getUserByThirdTypeAndUUid(String thirdAuthUUId, String type);
}